// [placeholder只兼容到ie8]


// 定义密码框专属属性
var passwordName;
// 定义初始input type属性,防止污染
var firstType;

$(document).ready(function(){
	//判断浏览器是否支持placeholder属性
	if(!('placeholder'in document.createElement('input'))){
		$('input').each(function(){
			// 只对type类型是input以及password操作
			var inputType=$(this).attr('type');
			// 只有当input的placeholder值存在时才进行操作
			if(( inputType != null)&&( inputType != "")&&( inputType != undefined)){
                placeholder($(this));
			}
		});
	}
});

// 判断浏览器为ie8,返回true/false
function browserV8(){
	if (navigator.appName === 'Microsoft Internet Explorer') { //判断是否是IE浏览器
       if (navigator.userAgent.match(/Trident/i) && (navigator.userAgent.match(/MSIE ([\d.]+)/)[1]<=8)) { //判断浏览器内核是否为Trident内核IE8.0
           return true;
       }
    }
}

function placeholder(input){
	// 获取input预输入文本
	var placeholder=input.attr('placeholder');
	// 获取当前input-type类型是否为password状态;
	var isPassword=input.attr('type')=='password';
    // 首先判断input是否有默认值
    if(input.val()==""){
      if(!isPassword){
         // 非password模块设置placeholder作为值,设置灰色
         input.val(placeholder).addClass('placeholderColor');
      }else{
      	 if(!browserV8()){
      		// removeAttr不兼容ie8
      		input.removeAttr('type');
      		input.val(placeholder).addClass('placeholderColor');
      	 }else{
      		// 重构input
      		rebuildInputByTypePassword(input,false);
      		// 设置文本及颜色
      		input.val(placeholder).addClass('placeholderColor');
      	}	
     }
   }
   input.focus(function(){
      // 获得焦点时,判断当前值是否为placeholder值
      if(input.val()==placeholder){
      	 input.val('').removeClass('placeholderColor');
      }
   });
   input.blur(function(){
      if(input.val()==''){
      	 if(!isPassword){
        	input.val(placeholder).addClass('placeholderColor');
      	 }else{
      		input.removeAttr('type').val(placeholder).addClass('placeholderColor');
      	 }
      }
   });
}

function focus(input,id){
   	// 获取input预输入文本
	var placeholder=input.attr('placeholder');
	// 获取当前input-type类型是否为password状态;
	var isPassword=input.attr('type')=='password';
    // 首先判断input是否有默认值
    // 获得焦点时,判断当前值是否为placeholder值
    if(input.val()==placeholder){
       var firstType=input.attr("firstType");
       if(firstType != undefined && !isPassword){
      	  rebuildInputByTypePassword(input,true);
      	  input.val('').removeClass('placeholderColor');
      	  setTimeout(function(){
      		  document.getElementById(id).focus()
      	  },100);
       }else{
      	  input.val('').removeClass('placeholderColor');
       }
    }else{
       input.removeClass('placeholderColor');
    }
}

function blur(input){
   // 获取input预输入文本
   var placeholder=input.attr('placeholder');
   // 获取当前input-type类型是否为password状态;
   var isPassword=input.attr('type')=='password';
   if(input.val()==''){
      if(!isPassword){
          input.val(placeholder).addClass('placeholderColor');
      }else{
      	  // 类型转化为type="text"
      	  rebuildInputByTypePassword(input,false);
      	  input.val(placeholder).addClass('placeholderColor');
      }
   }
}

// placeholder依旧还是通过input value实现,对于password的处理,需要对type类型进行转化为text,保证提示词可以正常显示,而不是显示为密码状态.
// 但是ie8上无法使用attr进行属性的修改,也不能通过方法prop进行修改,所以只能通过重新渲染html的方式进行修改type类型
// 默认只获取原input的属性[id,name,placeholder,type],进行重构
// status决定转化类型:true为password,false为text
function rebuildInputByTypePassword(input,status){
// 获取原有input基本属性值
   var oldInput = {
      id:input.attr('id') || '1',
      name:input.attr('name') || '1',
      placeholder:input.attr('placeholder'),
      type:input.attr('type')
   }
   passwordName=time();
   var otherText=input.parent().html().toString();
   var index=otherText.lastIndexOf('<INPUT');
   otherText=otherText.substring(0, index);
   if(status){
      input.parent()[0].innerHTML=otherText+'<input type="password" sign="'+passwordName+'" firstType="'+oldInput.type+'" class="placeholderColor" id="'+oldInput.id+'"placeholder="'+oldInput.placeholder+'" name="'+oldInput.name+'" />';
   }else{
      input.parent()[0].innerHTML=otherText+'<input type="text" sign="'+passwordName+'" firstType="'+oldInput.type+'" class="placeholderColor" id="'+oldInput.id+'" value="'+oldInput.placeholder+'" placeholder="'+oldInput.placeholder+'" name="'+oldInput.name+'" />';
   }
   // innerHTML的渲染不会渲染方法,因此需要重新注册focus/blur方法,才能调用
   $('input[sign="'+passwordName+'"]').focus(function(){
      focus($(this),oldInput.id);
   });
   $('input[sign="'+passwordName+'"]').blur(function(){
      blur($(this));
   });
}

// 生成随机属性值
function time(){
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth()+1;
    var day = date.getDate();
    var hour = date.getHours();
    var minute = date.getMinutes();
    var second = date.getSeconds();
    var num=(year+''+month+''+day+''+hour+''+minute+''+second);
    return num;
}





     


     